package services.common;

import java.util.List;
import java.util.Map;

import models.common.entity.t_info_type;
import services.base.BaseService;

import common.utils.Factory;
import common.utils.ResultInfo;

import daos.common.InfoTypeDao;

/**
 * 企业评审资料 类型 service
 *
 * @description 
 *
 * @author zhiliang.lan
 * @createDate 2017年4月15日
 */

public class InfoTypeService extends BaseService<t_info_type> {

	
	protected InfoTypeDao infoTypeDao = Factory.getDao(InfoTypeDao.class);
	
	/**
	 * 查询企业的所有评审资料类型,一级大类型,暂时八种
	 * 
	 * @param companyInfoIfd     
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年4月21日
	 */
	public List<t_info_type> queryInfoType() {
		
		return infoTypeDao.findInfoType();
	}

	/**
	 * 查询大类型的子类型列表
	 * 
	 * @param companyInfoId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年4月24日
	 */
	public List<t_info_type> queryDetailType(long infoTypeId) {

		return infoTypeDao.findDetailType(infoTypeId);
	}

	/**
	 * 查找所有大类型的子类型
	 * 
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月3日
	 */
	public List<t_info_type> findAllChildInfoType() {
		
		return infoTypeDao.findAllChildInfoType();
	}
	
	/**
	 * 根据大类型id查找子类型
	 * @param infoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月3日
	 */
	public List<t_info_type> findChildInfoTypeByInfoTypeId(long infoTypeId){
		
		return infoTypeDao.findChildInfoTypeByInfoTypeId(infoTypeId);
	}

	/**
	 * 根据大类型id查找子类型   -app
	 * 
	 * @param infoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年8月8日
	 */
	public List<Map<String, Object>> findChildInfoTypeByInfoTypeIdApp(
			long infoTypeId) {
		
		return infoTypeDao.findChildInfoTypeByInfoTypeIdApp(infoTypeId);
	}
	
	
	//根据主键查找
	public t_info_type findByPkID(long infoTypeId) {
		
		return infoTypeDao.findByID(infoTypeId);
	}

	/**
	 * 新增保存
	 * @param infoType
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月4日
	 */
	public ResultInfo addInfoType(t_info_type infoType) {
		ResultInfo result = new ResultInfo();
		
		boolean flag = infoTypeDao.save(infoType);
		if (!flag) {
			
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			
			return result;
		} 
		
		result.code = 1;
		result.msg="审核类型添加成功!";
		result.obj = infoType;
		
		return result;
	}

	/**
	 * 根据主键查对象
	 * @param id
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月4日
	 */
	public t_info_type findInfoTypeByPkId(long id) {
		
		return infoTypeDao.findByID(id);
	}

	/**
	 * 更新审核资料类型
	 * @param infoType
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月4日
	 */
	public ResultInfo updateInfoType(t_info_type infoType) {
		
		ResultInfo result = new ResultInfo();
		
		boolean flag = infoTypeDao.save(infoType);
		if (!flag) {
			
			result.code = ResultInfo.ERROR_SQL;
			result.msg = "系统错误";	
			
			return result;
		} 
		
		result.code = 1;
		result.msg="审核类型更新成功!";
		result.obj = infoType;
		
		return result;
	}

	/**
	 * 删除审核类型
	 * @param id
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年5月4日
	 */
	public boolean delInfoType(long id) {
		int row = infoTypeDao.delete(id);
		if(row<=0){
			return false;
		}
		return true;
	}

	

	/**
	 * 根据大类型infoTypeId和companyInfoId查询二级类型
	 * 
	 * @param infoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @param companyInfoId 
	 * @createDate 2017年6月7日
	 */
	public List<Map<String, Object>> findChildInfoTypeByInfoTypeIdAndUserId(
			long infoTypeId, long userId) {
		
		return infoTypeDao.findChildInfoTypeByInfoTypeIdAndUserId(infoTypeId, userId);
	}
	
	/**
	 * 根据大类型infoTypeId和companyInfoId查询二级类型   -app
	 * 
	 * @param infoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @param companyInfoId 
	 * @createDate 2017年6月7日
	 */
	public List<Map<String, Object>> findChildInfoTypeByInfoTypeIdAndUserIdApp(
			long infoTypeId, long userId) {
		
		return infoTypeDao.findChildInfoTypeByInfoTypeIdAndUserIdApp(infoTypeId, userId);
	}
	
	/**
	 * 根据大类型infoTypeId和companyInfoId查询二级类型的图片
	 * 
	 * @param infoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @param companyInfoId 
	 * @createDate 2017年6月15日11:20:37
	 */
	public List<Map<String, Object>> findChildInfoTypePicByInfoTypeIdAndUserId(
			long infoTypeId, long userId) {
		
		return infoTypeDao.findChildInfoTypePicByInfoTypeIdAndUserId(infoTypeId, userId);
	}

	/**
	 * 根据主键查找
	 * @param firstInfoTypeId
	 * @return
	 * @author zhiliang.lan
	 * @createDate 2017年6月12日
	 */
	public t_info_type findInfoTypeById(long firstInfoTypeId) {
		
		return infoTypeDao.findInfoTypeById(firstInfoTypeId);
	}

	
	
}
